#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>
#include <unistd.h>
void* test1(void*arg);
void* test2(void*arg);
void* test3(void*arg);
//1、创建无名信号量
sem_t sem1,sem2,sem3;
////////////////////////////////////////////////////////////
int main(int argc,const char*argv)
{
	sem_init(&sem1,0,0);
	sem_init(&sem2,0,0);
	sem_init(&sem3,0,1);
	pthread_t tid1,tid2,tid3;
	if(pthread_create(&tid1,NULL,test1,NULL)!=0||
			pthread_create(&tid2,NULL,test2,NULL)!=0||
			pthread_create(&tid3,NULL,test3,NULL)!=0)
	{
		printf("创建失败\n");
		return -1;
	}
	sem_destroy(&sem1);
	sem_destroy(&sem2);
	sem_destroy(&sem3);
	pthread_join(tid1,NULL);
	pthread_join(tid2,NULL);
	pthread_join(tid3,NULL);
	return 0;
}
void* test1(void*arg)
{
	while(1)
	{
		sem_wait(&sem3);
		sleep(1);
		printf("A\n");
		sem_post(&sem1);
	}
}
void* test2(void*arg)
{
	while(1)
	{
		sem_wait(&sem1);
		sleep(1);
		printf("B\n");
		sem_post(&sem2);
	}
}
void* test3(void*arg)
{
	while(1)
	{
		sem_wait(&sem2);
		sleep(1);
		printf("C\n");
		sem_post(&sem3);
	}
}
